var NodeRSA = require("node-rsa");
/**
 * 1.使用 node-rsa 生成 公钥和私钥，并进行服务端测试
 * @param pkcsType ：pkcs版本(pkcs1/pkcs8)，默认为 pkcs8
 */
function generateKeyPair(pkcsType,pkcsSize) {
    pkcsType = pkcsType ? pkcsType : 'pkcs8';//不为空则 设置为传入参数，为空则 设置为 pkcs8
    console.log('pkcsType=' + pkcsType);
    pkcsSize = pkcsSize || 512;
    //1.创建RSA对象，并指定 秘钥长度
    var key = new NodeRSA({ b: pkcsSize });
    key.setOptions({ encryptionScheme: 'pkcs1' });//指定加密格式

    //2.生成 公钥私钥，使用 pkcs8标准，pem格式
    var publicPem = key.exportKey(pkcsType+'-public-pem');//制定输出格式
    var privatePem = key.exportKey(pkcsType + '-private-pem');
    //console.log(key.$options);
    console.log(pkcsType+'公钥:\n',publicPem);
    console.log(pkcsType+'私钥:\n', privatePem);

   //公钥加密
    const privateKey = new NodeRSA(privatePem);
    privateKey.setOptions({encryptionScheme: 'pkcs1'})
    var encryData = key.encrypt('服务端测试 -> jameszou love code~~~','base64','utf8');
    console.log('\n私钥加密后的数据：\n', encryData); //加密后数据为 base64 编码
    // var decryptData = key.decrypt(encryData,'utf8');
    // console.log('\n公钥解密后的数据：\n', decryptData);
    test(encryData,privatePem)


}
function test(encryData,pridata) {
    //私钥解密
    var key = new NodeRSA(pridata);
    key.setOptions({ encryptionScheme: 'pkcs1' });
    var de = key.decrypt(encryData,'utf8')
    console.log(de)
}

generateKeyPair();
